package cn.com.surker.system.service;

import cn.com.surker.system.entity.SysOrgPosition;
import org.snaker.engine.SnakerException;
import org.snaker.engine.entity.Order;
import org.snaker.engine.entity.Task;

import java.util.List;
import java.util.Map;

/**
 * @Author lucky
 * @create 2022年10月17 19:12
 * @desc 获取部门、岗位用户信息
 */
public interface OriginPositionService {

    /**
     * 获取集团公司下所属用户
     * @param ids 岗位信息
     * @param creator 创建人
     * @param lastUpdator 最后执行人
     * @param deptId 部门ID
     * @param orgId 工厂ID
     * @param pid 岗位ID
     * @param parentPid 岗位父级ID
     * @param assigneeConfig 配置信息
     * @param map 流程JSON
     * @param order 流程实例
     * @param task 任务实例
     * @return
     * @throws SnakerException
     */
    List<String> getGroupUser(String ids, String creator, String lastUpdator, String assigneeConfig, Long orgId,
                              Long deptId, Long pid, Long parentPid, Map<String, Object> map, Order order, Task task) throws SnakerException;

	/**
	 * 保存组织机构岗位数据
	 * @param orgPosition
	 * @return
	 */
	Integer saveInitOrgPos(SysOrgPosition orgPosition);

	/**
	 * 删除组织机构喝岗位的关联
	 * @param id
	 * @return
	 */
	Integer deleteOrgPos(Long id);

	/**
	 * 根据组织机构和岗位查询数据
	 * @param orgId
	 * @param posId
	 * @return
	 */
	SysOrgPosition queryOrgPos(Long orgId, Long posId);

	/**
	 * 根据id更新组织机构和岗位数据
	 * @param orgPosition
	 * @return
	 */
	Integer updateOrgPosById(SysOrgPosition orgPosition);

	// 仅查询orgid下的，不迭代
	List<Map<String,Object>> queryPositionByOrg(Long orgId);

	SysOrgPosition queryById(Long id);

	/**
	 * 查询岗位下的下属岗位
	 * @param deptId			部门
	 * @param parentPosId		岗位
	 * @return
	 */
	List<SysOrgPosition> queryChildPosList(Long deptId, Long parentPosId);

	/**
	 * 查询用户管理岗位
	 * @param uid
	 * @return
	 */
	List<Map<String, Object>> findDefaultPosition(Long uid, Boolean isAll);
}
